package com.data
{
	import mx.collections.ArrayCollection;
	
	/**
	 * Klasse für Datenmodel einer Entscheidung
	 * 
	 */
	public class DecisionDAO implements IGraphElementDAO
	{
		/**
		* Text der Entscheidung
		*/
		private var _text:String = "Bedingung";
		/**
		* Liste mit allen parents
		*/
		private var _prev:Object;
		/**
		* Liste mit allen children
		*/
		private var _post:Object;
		/**
		* Eindeutiger Identifizierer
		*/
		private static var _uid:int = 0;
		
		private var _dataId:String;
		
		private var _decisionFunction:String;
		
		/**
		 * Konstruktor
		 * 
		 */
		public function DecisionDAO()
		{
			_uid++;
			_dataId = "d"+_uid
			_prev = {};
			_post = {};
		}
		
		public function set creator(value:String):void
		{
			
		}
		public function get creator():String
		{
			return "";
		}
		
		public function set text(value:String):void
		{
			_text = value;
		}
		public function get text():String
		{
			return _text;
		}
		
		public function get dataId():String
		{
			return _dataId;
		}
		
		public function set message(value:String):void
		{
			
		}
		public function get message():String
		{
			return "";
		}
		
		/**
		 * Hinzufügen eines parents
		 * @param obj Activity oder Decision Objekt
		 * 
		 */
		public function addPrev(uid:String):void
		{
			if(!_prev[uid])
				_prev[uid] = 1;
			else
				throw Error("Objekt kann nicht zur prev Liste hinzugefügt werden, " + 
						"da es schon in ihr vorhanden ist");
		}
		
		/**
		 * Entfernen eines parents
		 * @param obj Activity oder Decision Objekt
		 * 
		 */
		public function removePrev(uid:String):void
		{
			if(!_prev[uid])
				throw Error("Objekt kann nicht von prev Liste entfernt werden, " + 
						"da es nicht in ihr vorhanden ist");
			else
				_prev[uid] = null;
		}
		
		/**
		 * Hinzufügen eines child
		 * @param obj Activity oder Decision Objekt
		 * 
		 */
		public function addPost(uid:String):void
		{
			if(!_post[uid])
				_post[uid] = 1;
			else
				throw Error("Objekt kann nicht zur post Liste hinzugefügt werden, " + 
						"da es schon in ihr vorhanden ist");
		}
		
		/**
		 * Entfernen eines child
		 * @param obj Activity oder Decision Objekt
		 * 
		 */
		public function removePost(uid:String):void
		{
			if(!_prev[uid])
				throw Error("Objekt kann nicht von post Liste entfernt werden, " + 
						"da es nicht in ihr vorhanden ist");
			else
				_prev[uid] = null;
		}
		
		public function get prevList():Object
		{
			return _prev;
		}
		
		public function get postList():Object
		{
			return _post;
		}
		
		
		public function set fullAccessList(value:ArrayCollection):void
		{
			
		}
		public function get fullAccessList():ArrayCollection
		{
			return null;
		}
		
		public function set restrictedAccessList(value:ArrayCollection):void
		{
			
		}
		public function get restrictedAccessList():ArrayCollection
		{
			return null;
		}
		
		public function set noAccessList(value:ArrayCollection):void
		{
			
		}
		public function get noAccessList():ArrayCollection
		{
			return null;
		}
		
		public function set decisionFunction(value:String):void
		{
			_decisionFunction = value;
		}
		public function get decisionFunction():String
		{
			return _decisionFunction;
		}
		
		
	}
}